package com.fish.common.result;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 导入结果
 *
 * @author fish
 */
@Data
public class ImportResult<T> {

    /**
     * 总行数
     */
    private Integer totalCount = 0;

    /**
     * 成功行数
     */
    private Integer successCount = 0;

    /**
     * 失败行数
     */
    private Integer failureCount = 0;

    /**
     * 错误信息列表
     */
    private List<ErrorInfo> errorList = new ArrayList<>();

    /**
     * 成功导入的数据
     */
    private List<T> successList = new ArrayList<>();

    /**
     * 添加成功记录
     */
    public void addSuccess(T data) {
        successCount++;
        totalCount++;
        successList.add(data);
    }

    /**
     * 添加失败记录
     */
    public void addFailure(Integer rowIndex, String errorMsg) {
        failureCount++;
        totalCount++;
        errorList.add(new ErrorInfo(rowIndex, errorMsg));
    }

    /**
     * 是否全部成功
     */
    public boolean isAllSuccess() {
        return failureCount == 0;
    }

    /**
     * 错误信息
     */
    @Data
    public static class ErrorInfo {
        /**
         * 行号（从1开始）
         */
        private Integer rowIndex;

        /**
         * 错误信息
         */
        private String errorMsg;

        public ErrorInfo(Integer rowIndex, String errorMsg) {
            this.rowIndex = rowIndex;
            this.errorMsg = errorMsg;
        }
    }
}

